package com.example.sql_2_code_demo.finitestatemachine;

/**
 * 实现本接口的类都代表订单的某一个状态 （与本工程中的状态列对应）
 * 本接口中的方法都是一个事件（与本工程中excel表中的事件行表头对应）
 * 这些方法的返回值都是本接口（与本工程中excel表中状态列，事件行对应的单元格）
 */
public interface OrderStatus {


    /**
     * 第三方支付
     * 微信、支付宝
     */
    default OrderStatus pay() {
        throw new UnsupportedOperationException();
    }

    /**
     * 对公打款
     */
    default OrderStatus pay2public() {
        throw new UnsupportedOperationException();
    }

    /**
     * 对公打款待审核
     */
    default OrderStatus approvePay2Public() {
        throw new UnsupportedOperationException();
    }

    /**
     * 申请退款
     */
    default OrderStatus applyRefund() {
        throw new UnsupportedOperationException();
    }

    /**
     * 同意退款（退款申请已通过）
     */
    default OrderStatus refund() {
        throw new UnsupportedOperationException();
    }

}
